<div><img src="https://top-fwz1.mail.ru/counter?id=3548135;js=na" style="position:absolute;left:-9999px;" alt="Top.Mail.Ru" /></div>
Бесплатный перенос IT-инфраструктуры в облако

WireGuard на своем сервере: подробная инструкция

Илья Ушаков
Илья Ушаков
Технический писатель
18 июня 2023 г.
59240
9 минут чтения
Средний рейтинг статьи: 3.2

Виртуальные частные сети — это технология подключения в сеть, при котором происходит шифрование данных. Подключение к такой сети происходит поверх обычного соединения. Среди преимуществ их использования — безопасное подключение к общественным Wi-Fi-сетям и не только, а также дополнительный уровень безопасности и защиты данных при использовании облачных сервисов.

WireGuard — это протокол, разработанный с целью обеспечения безопасной и эффективной передачи данных в интернете. Как заявляет разработчик, он чрезвычайно простой, но в то же время быстрый и инновационный. Изначально он был доступен только для ОС семейства Linux, но немногим позже стал кроссплатформенным. Ниже перечислим основные его преимущества:

  • Бесплатный и легкий в использовании;
  • Оптимизирован для обеспечения максимальной скорости обмена данными;
  • Обеспечивает достойный уровень безопасности за счет использования новейших алгоритмов и механизмов аутентификации.

Image3

В настоящей статье будет представлена подробная пошаговая инструкция по установке сети WireGuard, включая дальнейшую его настройку со стороны сервера и со стороны пользователей. Все действия будут выполнены на облачном сервере нашей компании, который вы можете заказать по этой ссылке

В статье, для поднятия сервера WireGuard, была выбрана Ubuntu 22.04. Клиентская версия данного ПО будет установлена на Windows 10.

А если не хочется заниматься ручной настройкой — в Timeweb Cloud вы можете заказать сервер с готовым образом WireGuard. Сервер будет установлен и настроен автоматически, и вам останется только настроить подключение.

Скачивание WireGuard и конфигурация серверной части

Шаг 1. Чтобы поднять свой WireGuard, необходимо в первую очередь выполнить подключение к своему облачному серверу, используя протокол SSH. Команда для подключения представлена ниже:

ssh user_name@Server_IP-address

Если возникнут сложности, вы можете воспользоваться нашей инструкцией, чтобы правильно произвести подключение.

cloud

Шаг 2. Как только подключение будет выполнено, переходим к следующему шагу — обновлению существующих пакетов apt. Для этого в терминале выполним следующую команду:

sudo apt update

После начнется процесс обновления пакетов, который продемонстрирован на картинке ниже.

Image9

Шаг 3. Как только все пакеты будут обновлены, начинаем загрузку собственного WireGuard. Вводим в терминал системы команду, представленную ниже:

sudo apt install wireguard

После выполнения команды начнется процесс установки. На все вопросы системы во время скачивания отвечаем утвердительно. 

Image2

Шаг 4. Как только закончится скачивание всех файлов, переходим в главный каталог устанавливаемого ПО. Он находится по следующему адресу:

cd /etc/wireguard/

Это нужно для того, чтобы дальнейшая настройка сервера, включая создание ключей и редактирование конфига, происходила именно в каталоге установленного сервиса. Здесь будут храниться все создаваемые ключи сервера и его пользователей, а также главный конфиг, которые мы будем рассматривать немного позже.

Шаг 5. На данном этапе мы приступаем к созданию пары ключей для нашего сервера, которые будут нужны для настройки безопасного соединения. Сделать это возможно способом, представленным ниже:

wg genkey | tee /etc/wireguard/server_privatekey | wg pubkey | tee /etc/wireguard/server_publickey

Опишем ключевые элементы команды:

  • wg genkey — отвечает за генерацию закрытого ключа;
  • wg pubkey — отвечает за генерацию открытого ключа;
  • | — в первом и третьем случае служит для передачи ключа команде tee. Второе использование | необходимо для генерации открытого ключа на основе ранее полученного закрытого;
  • tee — записывает значения ключей в указанные после команды файлы.

Как итог, мы получим пару ключей, которые потребуются для последующей конфигурации сервера.

Image4

Чтобы изучить содержимое файлов с ключами, вводим в строку терминала:

cat server_privatekey
cat server_publickey

Как видно по картинке ниже, пара ключей успешно сгенерирована.

Image1

На данном этапе также нужно выполнить копирование приватного ключа. Он понадобится при настройке сервера WireGuard в следующем шаге.

Шаг 6. От правильной настройки главного конфигурационного файла сервера зависит успешность его дальнейшей работы. Сюда входят следующие настройки:

  • Добавление закрытого ключа сервера;
  • Указание IP-адреса сервера;
  • Указание порта для прослушивания сервера;
  • Набор команд для включения и отключения сервера.

Перед началом редактирования конфига, определим имя своего сетевого интерфейса. В строку терминала напишем:

ip a

В результате будет выведен список интерфейсов, среди которых нужно найти тот, что имеет IP-адрес текущего подключения.

Image8

Чтобы создать свой сервер WireGuard, перейдем к редактированию конфига:

sudo nano wg0.conf

Ниже приведем синтаксис данных в файле, достаточный для запуска:

[Interface]
PrivateKey = <закрытый_ключ>
Address = <IP-адрес_сервера>
ListenPort = <Порт>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <Интерфейс> -j MASQUERADE 
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <Интерфейс> -j MASQUERADE

Порядок заполненных данных соответствует порядку списка, который мы приводили в начале этого шага.

В данной конфигурации:

  • PrivateKey — закрытый ключ сервера. Его можно получить из файла server_privatekey. О том, как это сделать, мы говорили в прошлом шаге. 

  • Address — внутренний IP-адрес для интерфейса WireGuard. Например,10.0.0.1/24. Он должен быть уникальным и не конфликтовать с другими IP-адресами в вашей сети.

  • ListenPort — это порт, на котором сервер WireGuard будет слушать входящие соединения. Обычно выбирают порты от 51820 до 51830, но можно использовать любой свободный. Убедитесь, что выбранный порт открыт в настройках вашего брандмауэра.

  • PostUp — команды, выполняемые при запуске интерфейса. Они добавляют правила iptables для маршрутизации трафика через интерфейс WireGuard.

  • PostDown — команды, выполняемые при остановке интерфейса. Эти команды удаляют правила iptables, добавленные в PostUp.

Шаг 7. Далее произведем настройку IP forwarding:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf

Затем сразу проверим внесенные изменения:

sysctl -p

Image7

Как видно по картинке выше, все прошло успешно.

Шаг 8. Заключительным шагом данного раздела будет настройка правил запуска. 

Автозапуск сервера при включении системы настраивается следующим образом:

systemctl enable wg-quick@wg0.service

Для включения сервера, вводим в терминал:

systemctl start wg-quick@wg0.service

И наконец, чтобы проверить работу сервера:

systemctl status wg-quick@wg0.service

Image5

Как видно по картинке выше, сервер успешно запущен и функционирует. На этом шаге создание сервера WireGuard и его настройка окончена.

Настройка клиентской части WireGuard

Шаг 1. Чтобы пользователь мог пользоваться только что созданным собственным сервером WireGuard, необходимо создать для него ключи. Выполнить это можно также на сервере.

Для этого воспользуемся ранее рассмотренной командой:

wg genkey | tee /etc/wireguard/user1_privatekey | wg pubkey | tee /etc/wireguard/user1_publickey

Чтобы в будущем не было путаницы, старайтесь называть файлы с ключами уникальными именами.

Сразу копируем открытый ключ пользователя. Он понадобится нам в следующем этапе.

Теперь в папке wireguard находится 4 ключа и конфигурационный файл, как показано на рисунке ниже.

Image5

Шаг 2. Теперь, когда ключи созданы, переходим к доработке ранее созданного конфига сервера. Для этого открываем наш файл конфигурации:

nano wg0.conf

Нам нужно добавить настройки для соответствующего пользователя. Ниже представлен синтаксис этих настроек:

[Peer]
PublicKey = <Открытый_ключ_клиента>
AllowedIPs = <Разрешенный_IP_адрес_для_клиента>

AllowedIPs выбирается из того же диапазона IP, что был указан для сервера.

На картинке ниже приведен пример итогового файла конфигурации для сервера.

Image1

Шаг 3. После внесения всех изменений перезагружаем сервер WireGuard. Это нужно делать каждый раз при внесении корректировок в свой конфиг.

systemctl restart wg-quick@wg0

Шаг 4. Проверяем, что после внесенных изменений сервер успешно работает:

systemctl status wg-quick@wg0

Шаг 5. Переходим к установке необходимого ПО на компьютер клиента. Выполнить загрузку можно с сайта компании-разработчика.

Шаг 6. Теперь необходимо организовать пользовательский конфиг для подключения к серверу. Для этого на своем устройстве создадим специальный файл с расширением .conf — его название может быть произвольным, например, wg.conf.

Синтаксис файла представлен ниже:

[Interface]
PrivateKey = <Закрытый_ключ_клента>
Address = <IP-адрес_клиента>
DNS = 8.8.8.8

[Peer]
PublicKey = <Публичный_ключ_сервера>
Endpoint = <IP-адрес_сервера>:<Порт>
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20

В данной конфигурации:

  • PrivateKey — закрытый ключ клиента. Его можно получить из файла user1_privatekey.

  • Address — внутренний IP-адрес клиента в подсети WireGuard. Например, 10.0.0.2/24, где IP-адрес должен быть уникальным в пределах вашей сети.

  • DNS — DNS-сервер для использования клиентом. Например, 8.8.8.8 для использования DNS-серверов Google.

  • PublicKey — публичный ключ сервера. Его можно получить из файла server_publickey.

  • Endpoint — внешний IP-адрес сервера и порт для подключения.

  • AllowedIPs — разрешенные IP-адреса для маршрутизации через сервер. Строка AllowedIPs = 0.0.0.0/0 означает, что весь трафик будет маршрутизироваться через WireGuard. Так как мы указали именно такое значение AllowedIPs, то в этом случае указываем DNS = 8.8.8.8 (8.8.8.8 — DNS-сервер Google), чтобы DNS-запросы выполнялись через защищенное соединение.

  • PersistentKeepalive — интервал отправки keepalive -пакетов для поддержания соединения. Он указывается в секундах.

У вас рассмотренные параметры могут отличаться, в зависимости от поставленных целей.

На картинке ниже приведен пример итогового файла конфигурации для клиента.

Image3

Шаг 7. Следующим шагом загрузим только что созданный пользовательский конфиг в WireGuard. Для этого нажимаем на кнопку «Импорт туннелей из файла», как показано на рисунке ниже.

Image10

Шаг 8. После добавления файла перед вами откроется окно, в котором необходимо нажать кнопку «Подключить». После этого в поле «Статус» появится надпись «Подключен», если все было выполнено верно. 

Интересные и полезные факты о WireGuard

  • WireGuard разработан с акцентом на минималистичность. Он состоит всего из 4000 строк кода, что делает его легким для аудита и понимания. Это уменьшает возможность наличия ошибок и упрощает процесс разработки и обновление ПО.
  • WireGuard является частью ядра Linux с версии 5.6, что обеспечивает прямую интеграцию и высокую совместимость с операционными системами на базе Linux.
  • WireGuard полностью совместим с IPv6, следуя современным стандартам. Данный факт означает, что его можно использовать в сетях с IPv6, без необходимости перехода на IPv4.
  • WireGuard не ограничивается только Linux-ядрами. Он также поддерживает ядра других операционных систем, например Windows, macOS или Android.
  • К сожалению, главным минусом WireGuard является отсутствие в нем возможности настроить работу с использованием HTTP-прокси, т.к. он работает через UDP-протокол.
Настройте WireGuard на собственном облачном сервере

Заключение

В данной статье мы представили подробную инструкцию по установке WireGuard на свой сервер: скачали соответствующее ПО, а затем провели полную настройку как серверной, так и клиентской части. Надеемся, что данная инструкция была полезна и вы с легкостью сможете настроить сервер для своих потребностей.

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server
18 июня 2023 г.
59240
9 минут чтения
Средний рейтинг статьи: 3.2
Комментарии 61
Антон
02.12.2024, 22:42

[Interface] PrivateKey = <закрытый_ключ> Address = <IP-адрес_сервера> ListenPort = <Порт> PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <Интерфейс> -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <Интерфейс> -j MASQUERADE

Получается что правило ACCEPT работает только для входящего траффика, для OUT нет, логично дописать его вот так, на IN и OUT

Interface] PrivateKey = <закрытый_ключ> Address = <IP-адрес_сервера> ListenPort = <Порт> PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <Интерфейс> -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <Интерфейс> -j MASQUERADE

Cute
02.11.2024, 09:09

Здравствуйте, я решил попробовать поставить WireGuard на ваш облочный сервер, но по какой-то, причине интернета просто нет, я делаю запуск через консоль, при помощи этой команды: sudo wg-quick up wg. После того как я ввел эту команду, то мой облачный сервер замерзает(может так и должно). Я делал все по инструкции, но вот после, мне нужно было не через приложение запускать, а через консоль, запускаю, соединение есть, но вот интернета нет

Инкогнито
31.10.2024, 16:34

Добрый день! Эту статью вроде осилил, все получилось, спасибо! На выходе из туннеля имею ip vps'a. Однако осталось еще 2 критичных вопроса:

  1. Как настроить интерфейс wireguard на клиенте так, чтобы запросы русских ip-адресов по умолчанию шли не в туннель, а в обычный интерфейс, который выходит на моего провайдера? Может быть можно какой-то паттерн указать в dns и AllowedIPs?
  2. Как включить данный vpn на смартфоне ios? Если кто знает ответы или статьи, где можно почитать данные вопросы буду признателен!
Инкогнито
31.10.2024, 23:16

С ios вроде разобрался, там не сложно, прошел по инструкции (https://serversideup.net/generating-wireguard-qr-codes-for-fast-mobile-deployments/) , а вот с фильтрацией трафика РФ и не РФ вопрос остается открытым.

Mysterious
28.10.2024, 18:06

Здравствуйте. Как понять какой лимит подключений? На каких характеристиках в сервере нужно делать акцент, чтобы подключить к примеру 50-60 пользователей?

Timeweb Cloud
Timeweb Cloud
29.10.2024, 14:25

Добрый день!

Лимит подключений в WireGuard зависит исключительно от ресурсов сервера, встроенных ограничений на количество подключений в самом WireGuard нет.

Для подключения 50–60 пользователей подойдут следующие характеристики сервера:

  • Процессор: 2 ядра по 3.3 ГГц.

  • Оперативная память: 4 ГБ RAM.

Этих параметров должно хватить для указанного количества подключений. Если в процессе работы возникнут проблемы, можно рассмотреть увеличение процессорной мощности и объема оперативной памяти. Для начала вы можете выбрать конфигурацию с меньшими характеристиками и увеличивать их по мере необходимости.

mikhail
23.10.2024, 15:19

День добрый. Настроил Все работает. Но возник вопрос. Клиенты друг друга не видят (ping не проходит). какую настройку нужно смотреть? Спасибо

Timeweb Cloud
Timeweb Cloud
29.10.2024, 14:32

Добрый день!

Убедитесь, что на сервере включен IP Forwarding. Это можно сделать командой:

sysctl -w net.ipv4.ip_forward=1

Если IP Forwarding выключен, включите его, используя Шаг 7 из главы «Скачивание WireGuard и конфигурация серверной части».

Также убедитесь, что в конфигурации каждого клиента на сервере WireGuard указана подсеть, к которой относятся все клиенты. Например, если ваши клиенты находятся в подсети 10.0.0.0/24, в настройках каждого клиента на сервере должно быть:

AllowedIPs = 10.0.0.0/24

Это позволит серверу маршрутизировать трафик между клиентами, и они смогут видеть друг друга.

V
23.10.2024, 02:26

Добрый день. Подскажите пожалуйста, несмотря на такую хорошую и подробную инструкцию, выполнить подключение не получилось.

  1. Арендован Внешний сервер
  2. Все шаги, согласно инструкции, проведены
  3. При нажатии "подключить" в программе на ПК выдает "Подключено", но при этом отключается интернет вообще и все падает.
  • при этом Wireguard при проверки в Putty до этого выдавал "Актив"
Timeweb Cloud
Timeweb Cloud
29.10.2024, 14:54

Добрый день!

Проблема может быть связана с ограничениями со стороны интернет-провайдера. Также такая ситуация может возникать из-за ошибок в конфигурации. Для более точной диагностики лучше обратиться в поддержку — коллеги смогут проверить настройки и разобраться, почему соединение пропадает.

Гаруда
18.10.2024, 00:24

на 18.10.2024 с провайдерами Крыма wireguard отказывается работать. Outline настроилось и заработало без проблем.

Гаруда
18.10.2024, 12:58

UPD Outline отказался работать по мобильной сети. Снёс. Поставил амнезию. пока полёт нормальный.

Флакон
15.10.2024, 12:26

Здравствуйте, такая ошибка Oct 15 12:25:54 3619225-pg71278.twc1.net systemd[1]: wg-quick@wg0.service: Main process exited, code=exited,> Oct 15 12:25:54 3619225-pg71278.twc1.net systemd[1]: wg-quick@wg0.service: Failed with result 'exit-code'. Oct 15 12:25:54 3619225-pg71278.twc1.net systemd[1]: Failed to start WireGuard via wg-quick(8) for wg0.

Олег
16.10.2024, 13:00

косяк в файл настройки скорее всего

Аристарх
12.10.2024, 01:57

Здравствуйте! Спасибо за такую подробную инструкцию. Подскажите, пожалуйста, почему при подключении клиента WireGuard к заданному туннелю выдаёт ошибку "Unable to configure adapter network settings", в журнале сбой: "Unable to configure adapter network settings: unable to set ips: The parameter is incorrect."?

Аристарх
12.10.2024, 13:03

Нашёл у себя ошибку в конфиге WG: в строке Endpoint указал двузначный порт (2.). Заменил на 5-значный (51...). Всё равно при подключении к туннелю выдает ту же ошибку. В журнале выдает следующее:

2024-10-12 12:53:51.746188: [TUN] [MSI] Starting WireGuard/0.5.3 (Windows 10.0.19045; amd64) 2024-10-12 12:53:51.746188: [TUN] [MSI] Watching network interfaces 2024-10-12 12:53:51.765863: [TUN] [MSI] Resolving DNS names 2024-10-12 12:53:51.765863: [TUN] [MSI] Creating network adapter 2024-10-12 12:53:52.396190: [TUN] [MSI] Using existing driver 0.10 2024-10-12 12:53:52.436420: [TUN] [MSI] Creating adapter 2024-10-12 12:53:55.080483: [TUN] [MSI] Using WireGuardNT/0.10 2024-10-12 12:53:55.080483: [TUN] [MSI] Enabling firewall rules 2024-10-12 12:53:54.156819: [TUN] [MSI] Interface created 2024-10-12 12:53:55.678007: [TUN] [MSI] Dropping privileges 2024-10-12 12:53:55.678007: [TUN] [MSI] Setting interface configuration 2024-10-12 12:53:55.680007: [TUN] [MSI] Peer 1 created 2024-10-12 12:53:55.696820: [TUN] [MSI] Monitoring MTU of default v6 routes 2024-10-12 12:53:55.685817: [TUN] [MSI] Sending keepalive packet to peer 1 (<внешний IP-адрес сервера и порт для подключения>) 2024-10-12 12:53:55.685817: [TUN] [MSI] Sending handshake initiation to peer 1 (<внешний IP-адрес сервера и порт для подключения>) 2024-10-12 12:53:55.696820: [TUN] [MSI] Interface up 2024-10-12 12:53:55.698818: [TUN] [MSI] Setting device v6 addresses 2024-10-12 12:53:55.890743: [TUN] [MSI] Receiving handshake response from peer 1 (<внешний IP-адрес сервера и порт для подключения>) 2024-10-12 12:53:55.890743: [TUN] [MSI] Keypair 1 created for peer 1 2024-10-12 12:53:55.977764: [TUN] [MSI] Monitoring MTU of default v4 routes 2024-10-12 12:53:55.977764: [TUN] [MSI] Setting device v4 addresses 2024-10-12 12:53:56.110123: [TUN] [MSI] Startup complete 2024-10-12 12:53:56.110123: [TUN] [MSI] Unable to configure adapter network settings: unable to set ips: The parameter is incorrect. 2024-10-12 12:53:57.259426: [TUN] [MSI] Shutting down 2024-10-12 12:53:57.469352: [MGR] [MSI] Tunnel service tracker finished

Игорь
10.10.2024, 10:32

Добрый день, подскажите пожалуйста, выполнил все действия на ubuntu 22.04, после запуска команды "systemctl status wg-quick@wg0.service" - "Job for wg-quick@wg0.service failed because the control process exited with error code.", после запуска команды "systemctl status wg-quick@wg0.service" - "/usr/bin/wg-quick: line 295: Интерфейс: No such file or directory"

Timeweb Cloud
Timeweb Cloud
11.10.2024, 17:52

Добрый день!

Судя по описанию, проблема, скорее всего, связана с конфигурационным файлом wg0.conf. Рекомендуем выполнить следующие шаги:

  1. Перепроверьте блоки конфигурации, особенно секцию [Interface]. Убедитесь, что указаны все необходимые параметры (например, Address, PrivateKey), и ничего не пропущено.

  2. Проверьте наличие интерфейса wg0 командой:

ip link show

Если интерфейса wg0 нет в выводе команды, это подтверждает, что проблема может быть связана с его настройкой.

  1. Проверьте права доступа к файлу конфигурации wg0.conf. Убедитесь, что файл доступен для чтения службой:
sudo chmod 600 /etc/wireguard/wg0.conf
Эдуард
20.11.2024, 15:49

нужно в конфиге заменить <Интерфейс> на название интерфейса, его можно глянуть по команде ip -a, у автора это enp0s3

Виктор
09.10.2024, 12:43

Добрый день. Поднял Wireguard сервер на вашей площадке из шаблонов (локация Нидерланды). К сожалению, работает только через домашний WiFi. На смартфоне через моб. интернет и в других сетях Wireguard клиент подключается, но Интернета нет. Статистика клиента показывает, что пакеты отправляются, но принятые пакеты замирают на 92 B и не увеличиваются. Знакомый, ранее также поднял Wireguard сервер на вашей платформе с этой же локацией. Его подключается через любые сетки. Подскажите, пожалуйста, в чем может быть проблема с моим сервером? Спасибо.

Timeweb Cloud
Timeweb Cloud
11.10.2024, 19:06

Добрый день!

Проблема может возникать по множеству причин, и без дополнительной информации назвать точную причину сложно. Вот несколько вариантов, которые могут помочь:

– Проверьте логи WireGuard, чтобы выявить возможные ошибки:

sudo journalctl -u wg-quick@wg0

– В некоторых случаях помогает изменение портов в конфигурации WireGuard.

Если вы проверяли конфигурацию вашего знакомого в той же мобильной сети и она работала корректно, попробуйте сравнить конфигурации. Возможно, у него используются какие-то специфические настройки.

Если конфигурация вашего знакомого также не работает в вашей мобильной сети, либо у вас нет возможности ее проверить, стоит обратиться в поддержку вашего мобильного оператора. Они могут подсказать, по какой причине может возникать эта проблема.

Рустам
30.09.2024, 22:40

Вставьте в параметр PostUP строку iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE; iptables -A INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; А в параметр PostDown строку iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE; iptables -D INPUT -p udp -m udp --dport 51820 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; У меня после этого заработало.

Дмитрий
29.09.2024, 23:05

Здравствуйте! Подскажите, пожалуйста, как правильно добавить несколько клиентов? Спасибо!

Timeweb Cloud
Timeweb Cloud
30.09.2024, 16:11

Добрый день!

Для добавления нового пользователя в WireGuard выполните следующие шаги:

  1. Сгенерируйте приватный и публичный ключи для нового клиента:
wg genkey | tee /etc/wireguard/user2_privatekey | wg pubkey | tee /etc/wireguard/user2_publickey

Эти команды создадут приватный ключ user2_privatekey и публичный ключ user2_publickey.

  1. Откройте конфигурационный файл WireGuard /etc/wireguard/wg0.conf на сервере и добавьте блок для нового клиента:
[Peer]
PublicKey = Открытый_ключ_клиента
AllowedIPs = Разрешенный_IP_адрес_для_клиента

Замените <Открытый_ключ_клиента> на публичный ключ, который вы сгенерировали, и укажите нужный IP-адрес для клиента в параметре AllowedIPs.

  1. После внесения изменений перезапустите WireGuard:
wg-quick down wg0 && wg-quick up wg0

На стороне нового клиента также необходимо создать конфигурацию. Она не отличается от той, что описана в статье, но важно указать приватный ключ, созданный для нового пользователя:

[Interface]
PrivateKey = Закрытый_ключ_клиента
Address = IP-адрес_клиента
DNS = 8.8.8.8

[Peer]
PublicKey = Публичный_ключ_сервера
Endpoint = IP-адрес_сервера:Порт
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20

Теперь новый пользователь сможет подключиться к серверу.

Дмитрий
30.09.2024, 17:32

Спасибо большое, все понятно теперь! у меня еще вопрос, можно ли мониторить пользователей, сколько трафика тратит каждый пользователь, подключен ли сейчас т.д.?

Timeweb Cloud
Timeweb Cloud
02.10.2024, 17:09

Добрый день!

Увидеть всех пользователей вы можете, выполнив команду на сервере:

wg

Для каждого подключения будет указано:

transfer: отображает объем трафика за все время. Если вам нужно получать информацию, например, за месяц, вы можете перезапускать службу раз в месяц.

latest handshake: время последнего подключения. По этому параметру можно определить, подключен ли клиент.

Иван
17.09.2024, 12:23

Здравствуйте! А как ограничить входящую и исходящую скорости для некоторых клиентов по их Ip-адресам?

Иван
18.09.2024, 04:45

Отвечаю сам себе: всё-таки можно ограничить. Примерно вот так:

# tc qdisc add dev ens3 root handle 1:0 hfsc default 1
# tc class add dev ens3 parent 1:0 classid 1:1 hfsc sc rate 100mbit ul rate 100mbit
# tc class add dev ens3 parent 1:0 classid 1:2 hfsc sc rate 400kbit ul rate 400kbit
# tc filter add dev ens3 protocol all parent 1: u32 match ip dst 10.66.66.9 flowid 1:2
Timeweb Cloud
Timeweb Cloud
20.09.2024, 14:49

Здравствуйте!

Спасибо, что поделились! Ваш комментарий может очень помочь другим пользователям 🙌

Сергей
05.09.2024, 17:05

Доброго дня! Не подскажите, адрес интерфейса Wireguard обязательно должен быть 10...? Нельзя назначить что-то из 192.168..*, то есть адрес из внутренней серой сети, с той разницей что два последних октета будут другими. Допустим адрес сервера - 192.168.50.50, а адрес интерфейса - 192.168.100.50

Timeweb Cloud
Timeweb Cloud
20.09.2024, 14:45

Добрый день!

Да, вы можете использовать адреса из диапазона 192.168.* для интерфейса WireGuard, поскольку этот диапазон относится к внутренним или "серым" IP-адресам, так же как и диапазон 10...*. Эти адреса предназначены для использования внутри локальных сетей и не маршрутизируются через интернет, поэтому для WireGuard они вполне подходят.

Единственное, что важно, — убедиться, что IP-адреса, которые вы назначаете, не пересекаются с существующими адресами в вашей локальной сети.

Илья
05.09.2024, 10:36

"Address — внутренний IP-адрес клиента в подсети WireGuard. Например, 10.0.0.2/24" - сами-то пробовали такой адрес назначить на чистом конфиге? У меня не заработало пока маску /32 не выставил.

Timeweb Cloud
Timeweb Cloud
20.09.2024, 14:40

Добрый день!

Маска /24 указывает на подсеть и обычно работает, если маршруты настроены корректно. Однако в некоторых конфигурациях могут возникать проблемы, особенно если происходит пересечение с другими сетями или если настроена неправильная маршрутизация. Маска /32 задаёт конкретный IP-адрес и используется для точного указания маршрута только к одному устройству, что помогает избежать подобных конфликтов. В вашем случае это решение помогло из-за особенностей вашей сети.

Александр
28.08.2024, 05:43

Подскажите пожалуйста, при такой настройке, я могу использовать один и тот же конфиг для подключения нескольких устройств одновременно (пк, ноут, телефон, роутер)?

Или надо создавать для каждого нового устройства свой конфиг?

Timeweb Cloud
Timeweb Cloud
30.08.2024, 15:09

Для безопасного и корректного использования WireGuard каждому устройству рекомендуется создавать отдельный конфигурационный файл.

Николай
25.08.2024, 22:40

Приношу извинения автору. Статья актуальна не для России. Некоторые провайдеры блокируют WireGuard, даже с нестандартным портом. Научились. Ростелеком блокирует.

Илья
01.10.2024, 20:54

Не правда, все прекрасно работает на Ростелекоме.

Николай
25.08.2024, 20:26

Статья не актуальна.

Вальдемар
21.08.2024, 14:09

В результате будет выведен список интерфейсов, среди которых нужно найти тот, что имеет IP-адрес текущего подключения.

на скрине обозначен используемый интерфейс а конфигурируем wg0, это не опечатка?

Timeweb Cloud
Timeweb Cloud
30.08.2024, 15:09

Когда вы настраиваете WireGuard, вы создаете новый виртуальный сетевой интерфейс, который обычно называется wg0. Этот интерфейс используется исключительно для работы WireGuard и связан с конфигурацией туннеля, который вы настраиваете.

На скриншоте показан другой сетевой интерфейс, связанный с нашим текущим интернет-соединением (например, eth0, wlan0, и т.д.), который имеет IP-адрес, используемый для выхода в интернет. Этот интерфейс нужен для того, чтобы указать, через какой именно интерфейс будет проходить трафик, когда вы подключаетесь через WireGuard.

Иными словами:

— Интерфейс с текущим IP-адресом используется для определения исходного соединения.

— Интерфейс wg0 — это новый интерфейс, который вы создаете для работы WireGuard.

Username
19.08.2024, 01:31

Подскажите, как обновиться на новую версию без потери текущей конфигурации и пользователей?

Timeweb Cloud
Timeweb Cloud
30.08.2024, 15:08

Добрый день! Для обновления выполните следующее:

Шаг 1. Сделайте резервную копию текущих конфигурационных файлов. Скопируйте все конфигурационные файлы из директории /etc/wireguard/ в безопасное место:

sudo cp -r /etc/wireguard /путь_к_резервной_копии/

В Windows откройте WireGuard и экспортируйте текущие конфигурации туннелей. Для этого выберите каждый туннель, нажмите правой кнопкой мыши и выберите "Export tunnel(s)".

Шаг 2. Скачайте последнюю версию WireGuard или обновите его с помощью команд:

Для Ubuntu/Debian:

sudo apt update
sudo apt upgrade wireguard

Для CentOS/RHEL:

sudo yum update wireguard-tools

Шаг 3. Перезапустите WireGuard и убедитесь, что после обновления конфигурационные файлы остались на месте и не изменились. Если вы создали резервную копию на шаге 1, сравните файлы в /etc/wireguard/ с резервной копией.

Даниил
17.08.2024, 14:33

Не работает интернет, делал как в статье, но при подключении нет интернета, где я мог ошибиться?

Timeweb Cloud
Timeweb Cloud
29.08.2024, 12:06

Добрый день! Работа протокола Wireguard может быть ограничена вашим провайдером интернета (уточнить можно в их поддержке). Вместо готовой сборки Wireguard можно попробовать другие решения, например, настройку Outline на своем сервере.

Иван
12.08.2024, 23:02

У вас тут ошибка: Вы пишите server_privatekey: wg genkey | tee /etc/wireguard/server_privatekey | wg pubkey | tee /etc/wireguard/server_publickey

А потом вызываете почему-то: cat server_privatekeyCAT. Из-за этого не находит приватный ключ.

Timeweb Cloud
Timeweb Cloud
30.08.2024, 15:05

Спасибо, исправили досадную опечатку.

Username
08.08.2024, 13:32

я скачал wireguard tools на linux как мне добавить файл конфигурации из Шаг 7

Timeweb Cloud
Timeweb Cloud
30.08.2024, 15:02

Добрый день! Выполните следующее:

  1. Переместите файл конфигурации в директорию клиента /etc/wireguard/. Например, если ваш файл называется wg0.conf, выполните команду:
sudo mv /путь_к_файлу/wg0.conf /etc/wireguard/
  1. Установите нужные права доступа для конфигурационного файла:
sudo chmod 600 /etc/wireguard/wg0.conf
  1. Теперь вы можете активировать ваш туннель WireGuard, используя команду:
sudo wg-quick up wg0
Андрей Корник
Андрей Корник
26.06.2024, 09:17

Не работает подключение по SSH, пишет Permission denied (publickey,password).

Команда Timeweb Cloud
Команда Timeweb Cloud
02.07.2024, 09:06

Добрый день! По поводу этой ошибки напишите, пожалуйста, в поддержку из своей панели управления — коллеги помогут разобраться.

Michael Doronin
Michael Doronin
25.06.2024, 06:23

Статья хорошая. Из того, чего мне не хватило и пришлось искать дополнительно, так это разъяснений где в конфигах прописываются "внутренние айпишники", а где внешний от сервера.

И что на арендуемом сервере уже установлен mc и не надо заморачиваться с окном терминала (как минимум он решает проблему просмотра ключей и конфига).

Команда Timeweb Cloud
Команда Timeweb Cloud
08.07.2024, 09:50

Спасибо за замечание! Расписали подробнее про элементы конфигов.

Глеб Дубровский
Глеб Дубровский
20.06.2024, 03:42

Не понятно откуда брать ListenPort для файла конфигурации?

Michael Doronin
Michael Doronin
25.06.2024, 05:14

51820 ставьте

Команда Timeweb Cloud
Команда Timeweb Cloud
25.06.2024, 05:29

Добрый день! Параметр ListenPort — это порт, на котором сервер WireGuard будет слушать входящие соединения. Обычно выбирают порты от 51820 до 51830, но можно использовать любой свободный. Убедитесь, что выбранный порт открыт в настройках вашего брандмауэра.

Damn Wanderer
Damn Wanderer
08.02.2024, 08:05

здравствуйте, я не совсем понял что вписывать в "IP-адрес_клиента" при создании конфига для подключения. Туда ружно адрес пк или телефона, верно?

Команда Timeweb Cloud
Команда Timeweb Cloud
08.02.2024, 10:41

Добрый день! Секция [Interface] описывает конфигурацию вашего устройства — клиента, который подключается к серверу WireGuard. Параметр Address в этой секции указывает на IP-адрес (или диапазон IP-адресов), который будет назначен виртуальному сетевому интерфейсу WireGuard на вашем устройстве.

Для частных сетей обычно используются следующие диапазоны IP-адресов:

10.0.0.0 до 10.255.255.255

172.16.0.0 до 172.31.255.255

192.168.0.0 до 192.168.255.255

Если вы настраиваете WireGuard только для одного устройства или для личного использования, вам необязательно нужен целый диапазон IP-адресов. Например:

Address = 10.0.0.2/32

Адрес выбирается так, чтобы он не пересекался с адресами других сетей, к которым ваше устройство может быть подключено, чтобы избежать путаницы и проблем с доставкой данных.

TraislerTV
TraislerTV
16.12.2023, 16:26

Крутая статья. Пробовал по другим инструкциям и ничего не работало. Сделал по этой все работает да и еще с обьяснением теперь хоть стало понятно. Спасибо! Единственное что не верно в этой команде:

wg genkey | tee /etc/WireGuard/user1_privatekey | wg pubkey | tee /etc/WireGuard/user1_publickey

нужно сделать вот так:

wg genkey | tee /etc/wireguard/user1_privatekey | wg pubkey | tee /etc/wireguard/user1_publickey

Путь идет маленькими буквами а не большими.

Команда Timeweb Cloud
Команда Timeweb Cloud
18.12.2023, 04:14

Спасибо за замечание, поправили пути. Очень рады, что инструкция помогла 💙

Andrey Rybalkin
Andrey Rybalkin
19.07.2023, 05:25

Мне дико "нравится", когда автор ближе к концу статьи просто отвалился и стало уже не понятно. Особенно, касаемо создания конфиг-файла для wg...

Команда Timeweb Cloud
Команда Timeweb Cloud
20.07.2023, 08:05

Спасибо за комментарий! Автор внес правки, чтобы описать настройку клиентской части подробнее. Если какие-то моменты остались неясными, дайте знать — тоже доработаем. Также напомним, что у нас есть готовая сборка с Wireguard :) Ее можно развернуть в Польше или Нидерландах в один клик, и все конфиги будут настроены автоматически.